package demo.practice.binary_search;

public class P81 {

    public static void main(String[] args) {
        P81 p81= new P81();
        p81.search(new int[]{1},1);
    }
    public boolean search(int[] nums, int target) {
        if (nums == null || nums.length == 0)
            return false;

        int min = 0;
        int max = nums.length-1;

        while (min <= max) {
            int mid = min + (max - min) / 2;
            if (nums[mid] == target )
                return true;

            if (nums[min] == nums[mid]) {
                min++;
                continue;
            }


            if (nums[mid] > nums[min]) {//前面数字是有序的
                if (nums[min] <= target && target < nums[mid]) {//target在有序的这边(前面）
                    max = mid - 1;
                } else {
                    //target在无序的这边（后面）
                    min = mid + 1;
                }
            } else {//后面数字是有序的
                if (nums[mid] < target && target <= nums[max]) {//target在有序的这边(后面）
                    min = mid + 1;
                } else {
                    //target在无序的这边（前面）
                    max = mid - 1;
                }
            }
        }
        return  false;
    }

}
